package com.itcam.thread_.pool;

import java.util.concurrent.*;

public class ThreadPoolDemo2 {
    /*
        自定义线程池对象

        参数5: 任务队列
                1) 有界队列     new ArrayBlockingQueue<>(10)
                2) 无界队列     new LinkedBlockingDeque<>()
     */
    public static void main(String[] args) {
        ThreadPoolExecutor pool = new ThreadPoolExecutor(
                2,                            // 不能小于0
                5,                                       // 不能小于等于0
                60,                                      // 不能小于0
                TimeUnit.SECONDS,                        // 时间单位
                new ArrayBlockingQueue<>(10),    // 不能为null
                Executors.defaultThreadFactory(),        // 不能为null
                new ThreadPoolExecutor.CallerRunsPolicy()// 不能为null
        );

        for (int i = 1; i <= 16; i++) {
            pool.submit(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName() + "提交了任务");
                }
            });
        }
    }
}
